name: test mobile

on:
  pull_request:
    paths:
      - '.github/workflows/test-mobile.yml'
      - 'tooling/cli/templates/mobile/**'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test-android:
    runs-on: ${{ matrix.platform }}

    strategy:
      fail-fast: false
      matrix:
        platform: [ubuntu-latest, macos-latest, windows-latest]

    steps:
      - uses: actions/checkout@v3

      - name: install Rust stable
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true

      - name: install Linux dependencies
        if: matrix.platform == 'ubuntu-latest'
        run: |
          sudo apt-get update
          sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0

      - name: setup node
        uses: actions/setup-node@v3
        with:
          node-version: 16
          cache: yarn
          cache-dependency-path: |
            tooling/api/yarn.lock
            examples/api/yarn.lock

      - uses: actions/setup-java@v3
        with:
          distribution: temurin
          java-version: 11
          cache: gradle

      - name: Setup NDK
        uses: nttld/setup-ndk@v1
        id: setup-ndk
        with:
          ndk-version: r25b
          local-cache: true

      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: |
            tooling/cli
            examples/api/src-tauri

      - name: build CLI
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --manifest-path ./tooling/cli/Cargo.toml

      - name: build Tauri API
        working-directory: ./tooling/api
        run: yarn && yarn build

      - name: install API example dependencies
        working-directory: ./examples/api
        run: yarn

      - name: Init Android Studio Project
        working-directory: ./examples/api
        run: ../../tooling/cli/target/debug/cargo-tauri android init
        env:
          NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}

      - name: Build apk
        working-directory: ./examples/api
        run: ../../tooling/cli/target/debug/cargo-tauri android build
        env:
          NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
